package com.gitee.qdbp.jdbc.plugins;

/**
 * JDBC数据类型转换: 将代码中写的数据类型转换为java.sql.Types中的数据类型
 *
 * @author zhaohuihua
 * @version 20210430
 */
public interface JdbcDataTypeResolver {

    /**
     * 将代码中写的数据类型转换为java.sql.Types中的数据类型
     * 
     * @param dataType 代码中的数据类型<br>
     *            1.来自SQL模板中, 如#{createTime,jdbcType=TIMESTAMP}<br>
     *            2.来自实体类上的注解, 如@Column(columnDefinition="TIMESTAMP NOT NULL")
     * @return JdbcType java.sql.Types中的数据类型
     * @see java.sql.Types
     */
    Integer parseDataType(String dataType);

    /**
     * 将代码中写的数据类型转换为java.sql.Types中的数据类型
     * 
     * @param dataType 代码中的数据类型
     * @return JdbcType字段名
     */
    String getJdbcType(String dataType);

    /** 是否支持定义精度 **/
    boolean supportDefinePrecision(String dataType);

    /** 是否支持定义小数位 **/
    boolean supportDefineScale(String dataType);

    /** 是否支持定义长度 **/
    boolean supportDefineLength(String dataType);

    /** 是否支持Unicode(如NVARCHAR/NCHAR/NTEXT等) **/
    boolean supportUnicode(String dataType);
}
